package listbyorder.access101_200.test134;

/**
 * @author code_yc
 * @version 1.0
 * @date 2020/6/11 10:13
 */
public class Solution1 {

    // 134 加油站
    // 方法一： 自己的方法，遍历每个位置的加油站，查看此位置的加油是否可以满足需求
    public int canCompleteCircuit(int[] gas, int[] cost) {
        if (gas == null || gas.length == 0) return -1;
        for (int i = 0; i < gas.length; i++) {
            if (isAccess(gas, cost, i)) {
                return i;
            }
        }
        return -1;
    }

    // 查找到前的位置
    private boolean isAccess(int[] gas, int[] cost, int site) {
        if (gas[site] < cost[site]) return false;

        int len = gas.length;
        int sum = 0;
        for (int i = 0; i < len; i++) {
            sum += gas[(site + i) % len];
            sum -= cost[(site + i) % len];
            if (sum < 0) return false;
        }
        return true;
    }
}
